inspector: Hide tabs instead of making them insensitive
authorMatthias Clasen <mclasen@redhat.com>
Sat, 10 May 2014 03:57:57 +0000 (23:57 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 11 May 2014 02:04:33 +0000 (22:04 -0400)
modules/inspector/classes-list.c
modules/inspector/classes-list.h
modules/inspector/css-editor.c
modules/inspector/css-editor.h
modules/inspector/prop-list.c
modules/inspector/signals-list.c
modules/inspector/window.c
modules/inspector/window.ui

index cc5efbcff265340c4e7e2a790952f5abbce00081..069881fba7dd31f7681fce20e5f9c7fa5f61de23 100644 (file)
@@ -226,7 +226,7 @@ cleanup_context (GtkInspectorClassesList *cl)
 
   gtk_list_store_clear (cl->priv->model);
   cl->priv->context = NULL;
-  gtk_widget_set_sensitive (GTK_WIDGET (cl), FALSE);
+  gtk_widget_hide (GTK_WIDGET (cl));
 }
 
 static void
@@ -239,8 +239,8 @@ remove_dead_object (gpointer data, GObject *dead_object)
 }
 
 void
-gtk_inspector_classes_list_set_widget (GtkInspectorClassesList *cl,
-                                       GtkWidget               *widget)
+gtk_inspector_classes_list_set_object (GtkInspectorClassesList *cl,
+                                       GObject                 *object)
 {
   GHashTable *hash_context;
   GtkTreeIter tree_iter;
@@ -248,9 +248,12 @@ gtk_inspector_classes_list_set_widget (GtkInspectorClassesList *cl,
 
   cleanup_context (cl);
 
-  gtk_widget_set_sensitive (GTK_WIDGET (cl), TRUE);
+  if (!GTK_IS_WIDGET (object))
+    return;
 
-  cl->priv->context = gtk_widget_get_style_context (widget);
+  gtk_widget_show (GTK_WIDGET (cl));
+
+  cl->priv->context = gtk_widget_get_style_context (GTK_WIDGET (cl));
 
   g_object_weak_ref (G_OBJECT (cl->priv->context), remove_dead_object, cl);
 
index 6dfc0dbe3270dbc32811d2e43696e54dd1f12c06..9eaf39c83742fc89d2faf39537adbd2b06bafb19 100644 (file)
@@ -50,8 +50,8 @@ G_BEGIN_DECLS
 
 GType      gtk_inspector_classes_list_get_type   (void);
 GtkWidget *gtk_inspector_classes_list_new        (void);
-void       gtk_inspector_classes_list_set_widget (GtkInspectorClassesList *cl,
-                                                  GtkWidget               *widget);
+void       gtk_inspector_classes_list_set_object (GtkInspectorClassesList *cl,
+                                                  GObject                 *object);
 
 G_END_DECLS
 
index d5a59b9fa87a242b380c199f237a6b0ab9406b34..861ad54a54493d4d4a46e4db84710f6a9064314e 100644 (file)
@@ -226,7 +226,6 @@ constructed (GObject *object)
 {
   GtkInspectorCssEditor *ce = GTK_INSPECTOR_CSS_EDITOR (object);
 
-  gtk_widget_set_sensitive (GTK_WIDGET (ce), ce->priv->global);
   create_provider (ce);
   apply_system_font (ce);
   set_initial_text (ce);
@@ -309,12 +308,12 @@ remove_dead_object (gpointer data, GObject *dead_object)
   GtkInspectorCssEditor *ce = data;
 
   ce->priv->context = NULL;
-  gtk_widget_set_sensitive (GTK_WIDGET (ce), ce->priv->global);
+  gtk_widget_hide (GTK_WIDGET (ce));
 }
 
 void
-gtk_inspector_css_editor_set_widget (GtkInspectorCssEditor *ce,
-                                     GtkWidget             *widget)
+gtk_inspector_css_editor_set_object (GtkInspectorCssEditor *ce,
+                                     GObject               *object)
 {
   gchar *text;
   GtkCssProvider *provider;
@@ -322,19 +321,25 @@ gtk_inspector_css_editor_set_widget (GtkInspectorCssEditor *ce,
   g_return_if_fail (GTK_INSPECTOR_IS_CSS_EDITOR (ce));
   g_return_if_fail (!ce->priv->global);
 
-  gtk_widget_set_sensitive (GTK_WIDGET (ce), TRUE);
-
   if (ce->priv->context)
     {
       g_object_weak_unref (G_OBJECT (ce->priv->context), remove_dead_object, ce);
       text = get_current_text (GTK_TEXT_BUFFER (ce->priv->text));
       g_object_set_data_full (G_OBJECT (ce->priv->context),
                               GTK_INSPECTOR_CSS_EDITOR_TEXT,
-                              text,
-                              g_free);
+                              text, g_free);
+      ce->priv->context = NULL;
     }
 
-  ce->priv->context = gtk_widget_get_style_context (widget);
+  if (!GTK_IS_WIDGET (object))
+    {
+      gtk_widget_hide (GTK_WIDGET (ce));
+      return;
+    }
+
+  gtk_widget_show (GTK_WIDGET (ce));
+
+  ce->priv->context = gtk_widget_get_style_context (GTK_WIDGET (object));
 
   provider = g_object_get_data (G_OBJECT (ce->priv->context), GTK_INSPECTOR_CSS_EDITOR_PROVIDER);
   if (!provider)
index 08ee4e0526113509526e66338bf8438279b63a27..bd8eb76004358468e74909dfcbf799f42a997166 100644 (file)
@@ -50,8 +50,8 @@ G_BEGIN_DECLS
 
 GType      gtk_inspector_css_editor_get_type   (void);
 GtkWidget *gtk_inspector_css_editor_new        (gboolean               global);
-void       gtk_inspector_css_editor_set_widget (GtkInspectorCssEditor *ce,
-                                                GtkWidget             *widget);
+void       gtk_inspector_css_editor_set_object (GtkInspectorCssEditor *ce,
+                                                GObject               *object);
 
 G_END_DECLS
 
index 68d507432f3300322d663d189a9738c34558a40a..f9eda2708433b7691f64261366e7e17f00743615 100644 (file)
@@ -239,8 +239,6 @@ static void remove_dead_object (gpointer data, GObject *dead_object);
 static void
 cleanup_object (GtkInspectorPropList *pl)
 {
-  gtk_widget_set_sensitive (GTK_WIDGET (pl), FALSE);
-
   if (pl->priv->object)
     g_object_weak_unref (pl->priv->object, remove_dead_object, pl);
 
@@ -282,29 +280,41 @@ gtk_inspector_prop_list_set_object (GtkInspectorPropList *pl,
 
   pl->priv->object = object;
 
-  g_object_weak_ref (object, remove_dead_object, pl);
+  if (!object)
+    {
+      gtk_widget_hide (GTK_WIDGET (pl));
+      return TRUE;
+    }
 
-  g_object_set (pl->priv->attribute_column,
-                "visible", !pl->priv->child_properties && GTK_IS_CELL_RENDERER (object),
-                NULL);
+  g_object_weak_ref (object, remove_dead_object, pl);
 
   if (pl->priv->child_properties)
     {
       GtkWidget *parent;
 
       if (!GTK_IS_WIDGET (object))
-        return TRUE;
+        {
+          gtk_widget_hide (GTK_WIDGET (pl));
+          return TRUE;
+        }
 
       parent = gtk_widget_get_parent (GTK_WIDGET (object));
       if (!parent)
-        return TRUE;
+        {
+          gtk_widget_hide (GTK_WIDGET (pl));
+          return TRUE;
+        }
+
+      gtk_tree_view_column_set_visible (pl->priv->attribute_column, FALSE);
 
       props = gtk_container_class_list_child_properties (G_OBJECT_GET_CLASS (parent), &num_properties);
     }
   else
-    props = g_object_class_list_properties (G_OBJECT_GET_CLASS (object), &num_properties);
+    {
+      gtk_tree_view_column_set_visible (pl->priv->attribute_column, GTK_IS_CELL_RENDERER (object));
 
-  gtk_widget_set_sensitive (GTK_WIDGET (pl), TRUE);
+      props = g_object_class_list_properties (G_OBJECT_GET_CLASS (object), &num_properties);
+    }
 
   for (i = 0; i < num_properties; i++)
     {
@@ -326,6 +336,7 @@ gtk_inspector_prop_list_set_object (GtkInspectorPropList *pl,
                         G_CALLBACK (gtk_inspector_prop_list_prop_changed_cb),
                         pl);
 
+  gtk_widget_show (GTK_WIDGET (pl));
   return TRUE;
 }
 
index f511e2addbef3bc21d9ef77a592def12a20028ab..276b4e65ae5c1c75bcba7dbbe884aa419eeee0a8 100644 (file)
@@ -121,8 +121,6 @@ gtk_inspector_signals_list_set_object (GtkInspectorSignalsList *sl,
 {
   gtk_list_store_clear (sl->priv->model);
 
-  gtk_widget_set_sensitive (GTK_WIDGET (sl), TRUE);
-
   read_signals_from_object (sl, object);
 }
 
index 499129f790746159d070a289bf8aea1a9613c246..d93d2047fb8e593aa0e274dc666c8577e60c8563 100644 (file)
@@ -76,22 +76,11 @@ on_widget_tree_selection_changed (GtkInspectorWidgetTree *wt,
       gtk_inspector_signals_list_set_object (GTK_INSPECTOR_SIGNALS_LIST (iw->signals_list), selected);
       gtk_inspector_object_hierarchy_set_object (GTK_INSPECTOR_OBJECT_HIERARCHY (iw->object_hierarchy), selected);
       gtk_inspector_button_path_set_object (GTK_INSPECTOR_BUTTON_PATH (iw->button_path), selected);
+      gtk_inspector_classes_list_set_object (GTK_INSPECTOR_CLASSES_LIST (iw->classes_list), selected);
+      gtk_inspector_css_editor_set_object (GTK_INSPECTOR_CSS_EDITOR (iw->widget_css_editor), selected);
 
       if (GTK_IS_WIDGET (selected))
-        {
-          GtkWidget *widget = GTK_WIDGET (selected);
-
-          gtk_inspector_flash_widget (iw, widget);
-          gtk_inspector_classes_list_set_widget (GTK_INSPECTOR_CLASSES_LIST (iw->classes_list), widget);
-          gtk_inspector_css_editor_set_widget (GTK_INSPECTOR_CSS_EDITOR (iw->widget_css_editor), widget);
-          gtk_widget_set_visible (iw->classes_list, TRUE);
-          gtk_widget_set_visible (iw->widget_css_editor, TRUE);
-        }
-      else
-        {
-          gtk_widget_set_visible (iw->classes_list, FALSE);
-          gtk_widget_set_visible (iw->widget_css_editor, FALSE);
-        }
+        gtk_inspector_flash_widget (iw, GTK_WIDGET (selected));
     }
 }
 
index c78faa651506ec84e1824b6625acba4af463823b..75044c2f6732a91b7b0c05ec56ce6fa9bfaa95f1 100644 (file)
                     </child> 
                     <child>
                       <object class="GtkInspectorPropList" id="child_prop_list">
-                        <property name="visible">True</property>
                         <property name="child-properties">True</property>
                         <property name="widget-tree">widget_tree</property>
                       </object>
                     </child> 
                     <child>
                       <object class="GtkInspectorClassesList" id="classes_list">
-                        <property name="visible">True</property>
                       </object>
                     </child>
                     <child type="tab">
                     </child> 
                     <child>
                       <object class="GtkInspectorCssEditor" id="widget_css_editor">
-                        <property name="visible">True</property>
                         <property name="global">False</property>
                       </object>
                     </child>